Was ist landau notation?
Landau-Notation (O-Notation)
Die Landau-Notation, oft auch als O-Notation (Big O Notation) bezeichnet, ist ein mathematisches Konzept zur Beschreibung des asymptotischen Wachstums von Funktionen. Sie wird in der Informatik hauptsächlich verwendet, um die Zeit- und Speicherkomplexität von Algorithmen zu analysieren und zu vergleichen. Anstatt die genaue Laufzeit in Sekunden oder Millisekunden anzugeben, konzentriert sich die O-Notation auf die Skalierbarkeit eines Algorithmus, d.h. wie sich die Laufzeit oder der Speicherverbrauch mit der Größe der Eingabe verändert.
Kernkonzepte:
- Asymptotisches Verhalten: Die O-Notation betrachtet das Verhalten einer Funktion, wenn die Eingabegröße gegen Unendlich strebt. Konstante Faktoren und Terme niedrigerer Ordnung werden dabei ignoriert, da sie für große Eingaben vernachlässigbar sind. Mehr dazu unter Asymptotisches%20Verhalten.
- Obere Schranke: Die O-Notation gibt eine obere Schranke für die Wachstumsrate einer Funktion an. Wenn ein Algorithmus die Zeitkomplexität O(n) hat, bedeutet das, dass seine Laufzeit höchstens linear mit der Eingabegröße n wächst. Sie könnte aber auch langsamer wachsen.
- Die wichtigsten Komplexitätsklassen:
- O(1) - Konstant: Die Laufzeit ändert sich nicht mit der Größe der Eingabe. Mehr dazu unter Konstante%20Zeit.
- O(log n) - Logarithmisch: Die Laufzeit wächst logarithmisch mit der Eingabegröße. Oft bei Suchalgorithmen wie binärer Suche zu finden. Mehr dazu unter Logarithmische%20Zeit.
- O(n) - Linear: Die Laufzeit wächst linear mit der Eingabegröße. Beispiele: Lineare Suche. Mehr dazu unter Lineare%20Zeit.
- O(n log n) - Linearithmisch (oder Quasilinear): Oft bei effizienten Sortieralgorithmen wie Mergesort zu finden.
- O(n<sup>2</sup>) - Quadratisch: Die Laufzeit wächst quadratisch mit der Eingabegröße. Beispiele: Einfache Sortieralgorithmen (Bubblesort, Insertionsort). Mehr dazu unter Quadratische%20Zeit.
- O(2<sup>n</sup>) - Exponentiell: Die Laufzeit wächst exponentiell mit der Eingabegröße. Vermeiden! Mehr dazu unter Exponentielle%20Zeit.
- O(n!) - Fakultät: Die Laufzeit wächst sehr schnell mit der Eingabegröße. Praktisch unbrauchbar für größere Eingaben.
Weitere Notationen:
Neben der O-Notation gibt es weitere verwandte Notationen:
- Ω-Notation (Omega): Gibt eine untere Schranke für die Wachstumsrate an.
- Θ-Notation (Theta): Gibt eine genaue Schranke für die Wachstumsrate an. Die Funktion wächst asymptotisch so schnell wie die angegebene Funktion.
- o-Notation (Klein-o): Gibt an, dass die Funktion langsamer wächst als die angegebene Funktion (keine obere Schranke).
- ω-Notation (Klein-Omega): Gibt an, dass die Funktion schneller wächst als die angegebene Funktion (keine untere Schranke).
Bedeutung für die Informatik:
Die O-Notation ist ein unverzichtbares Werkzeug für die Beurteilung der Effizienz von Algorithmen. Sie ermöglicht es Programmierern und Informatikern, Algorithmen hinsichtlich ihrer Skalierbarkeit zu vergleichen und den geeignetsten Algorithmus für eine bestimmte Aufgabe auszuwählen. Das Verständnis der O-Notation hilft bei der Entwicklung effizienterer und ressourcenschonenderer Software.